perm filename TSER.MAC[901,BGB] blob sn#129623 filedate 1974-11-12 generic text, type T, neo UTF8
	TITLE TSERVO ROUTINE
00200	A1=1
00300	ENTRY TSERVO
00400	INTERNAL STATUS, FLAG, COUNT, P1, P2, P3, X1, X2, X3, L1, L2, L3
00500	INTERNAL E1, E2, E3
00600
00700	;REGISTERS AVAILABLE TO USER
00800
00900	STATUS:	Z;	STATUS BITS
01000	FLAG:	Z;	NON-ZERO IF SERVOING
01100	COUNT:	Z;	LENS CHANGE COUNTER
01200	P1:	Z;	LATEST POT READING - FOCUS
01300	P2:	Z;	TILT
01400	P3:	Z;	PAN
01500	X1:	Z;	PREVIOUS POT READING
01600	X2:	Z
01700	X3:	Z
01800	L1:	Z;	FINAL POT VALUES
01900	L2:	Z
02000	L3:	Z
02100	E1:	4;	TOLERANCES
02200	E2:	10
02300	E3:	10
02400
02500	;REGISTERS FOR INTERNAL USE ONLY
02600	.DEL:	25;	COUNTER FOR HUNG A-D
02700	.MCNT:	300;	LENS COUNT
02800	.MCNTX:	240;	LENS MOTOR CUTOFF
02900	.MISSD:	100;	DATA MISSED COUNT
03000	.CNTR:	40;	STOP COUNTER MAX
03100
03200	;STATUS DITS
03300	.DONE==1
03400	.RUN==2
03500	.HUNG==20
03600	.STOP==10
03700	.LENS==4
03800	.MISS==40
03900
04000	;RELAY BITS
04100	.P1P==20000;	FOCUS NEAR
04200	.P1M==10000;	FOCUS FAR
04300	.P2M==400000;	TILT UP
04400	.P2P==200000;	TILT DOWN
04500	.P3M==40000;	PAN CW
04600	.P3P==100000;	PAN CCW
04700	.XLENS==4000
     

00100	;CONSTANTS
00200
00300	.AD==424
00400	.DATA==204
00500	.MISC==700
00600	.REL==40
00700	OPDEF SPCWAR[43B8]
00800
00900	TSERVO:	MOVE 17,STATUS;		FIXUP STATUS BITS
01000		ANDCMI 17,.HUNG+.MISS
01100		ORI 17,.RUN
01200		SETZM FLAG
01300		SETZM 16;
01400		TRNN 17,.DONE
01500		JRST .LAB1
01600		SETZM COUNT
01700		CONO .MISC,.REL
01800		MOVEM 17,STATUS
01900		CALL
02000
02100	.LAB1:	TRZN 17,.LENS
02200		JRST .LAB2
02300		MOVE .MCNT
02400		ADDM COUNT
02500	.LAB2:	TRNE 17,.STOP
02600		JRST .LABD
02700		CONI .DATA,1
02800		ANDI 1,7
02900		CONO .DATA,4250
03000		CONO .AD,172000
03100		MOVE 4,.MISSD
03200		MOVE 3,.DEL
03300		CONI .DATA,2
03400		TRNE 2,11000
03500		JRST .+3
03600		SOJG 3,.-3
03700		JRST .HANG
03800		TRNN .DATA,10000
03900		JRST .+3
04000		SOJG 4,.-10
04100		JRST .DMISS
04200		DATAI .DATA,5
04300		CONO .AD,4111
04400		CONO .DATA,203560(1)
04500		ASHC 5,-↑D24
04600		LSH 6,1
04700		ASHC 6,-↑D24
04800		LSH 7,1
04900		ASH 7,-↑D24
     

00100	MOVE 10,[XWD 5,P1]
00200		BLT 10,P3
00300		SUB 5,L1
00400		SUB 6,L2
00500		SUB 7,L3
00600		MOVM 11,5
00700		MOVM 12,6
00800		MOVM 13,7
00900		CAMGE 11,E1
01000	JRST .LAB3
01100		JUMPG 5,.+2
01200		TROA 16,.P1M
01300		ORI 16,.P1P
01400		SETOM FLAG
01500	.LAB3:	CAMGE 12,E2
01600		JRST .LAB4
01700		JUMPG 6,.+2
01800		TROA 16,.P2M
01900		ORI 16,.P2P
02000		SETOM FLAG
02100	.LAB4:	CAMGE 13,E3
02200		JRST .LAB5
02300		JUMPG 7,.+2
02400		TROA 16,.P3M
02500		ORI 16,.P3P
02600		JRST .LAB6
02700
02800	.LAB5:	SKIPN FLAG
02900		JRST .LABD
03000	.LAB6:	MOVS 10,[XWD 5,P1]
03100		BLT 10,7
03200		SUB 5,X1
03300		SUB 6,X2
03400		SUB 7,X3
03500		MOVMS 5
03600		MOVMS 6
03700		MOVMS 7
03800		SUB 5,E1
03900		SUB 6,E2
04000		SUB 7,E3
04100		AND 5,6
04200		AND 5,7
04300		JUMPGE 5,.LAB10
04400		AOS 15,.SCNT
04500		CAMGE 15,.CNTR
04600		JRST .LAB11
04700		SETZM 16
04800		ORI 17,.STOP+.DONE
04900		JRST .+5
     

00100	.HANG:	TROA 17,.HUNG+.DONE
00200	.DMISS:	ORI 17,.MISS+.DONE
00300		CONO .AD,4000
00400		CONO .DATA,203560(1)
00500		SETZM COUNT
00600		SETZM .SCNT#
00700		JRST .LABB
00800
00900	.LABD:	SKIPN COUNT
01000		ORI 17,.DONE
01100	.LAB10:	MOVE 10,[XWD P1,X1]
01200		BLT 10,X3
01300		SETZM .SCNT
01400	.LAB11:	MOVE 15,COUNT
01500		CAMLE 15,.MCNTX
01600		ORI 16,.XLENS
01700	.LABB:	CONO .MISC,.REL(16)
01800		JUMPLE 15,.+2
01900		SOS COUNT
02000		MOVEM 17,STATUS
02100		CALL
02200
02300	FLUSH:	CONO .MISC,.REL
02400		SETOM FL#
02500		CALL
02600	END